package com.yootk.main;

import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.ParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;

/**
 * ParserContext与表达式分隔符
 */
public class Demo02_ParserContext {
    public static void main(String[] args) {
//        test1();
        test2();
    }

    /**
     * 使用分隔符进行表达式的处理
     */
    public static void test1() {
        String str = "#{10 + 20}";
        ExpressionParser parser = new SpelExpressionParser();
        Expression exp = parser.parseExpression(str, ParserContext.TEMPLATE_EXPRESSION);
        System.err.println("SpEL处理结果：" + exp.getValue());
    }

    /**
     * 自定义分隔符
     */
    public static void test2() {
        String str = "#[10 + 20]";
        ExpressionParser parser = new SpelExpressionParser();
        Expression exp = parser.parseExpression(str, new ParserContext() {
            @Override
            public boolean isTemplate() {
                return true;    // 决定了模板是否启用的关键
            }
            @Override
            public String getExpressionPrefix() {
                return "#[";    // 定义前缀
            }
            @Override
            public String getExpressionSuffix() {
                return "]";     // 定义后缀
            }
        });
        System.err.println("SpEL处理结果：" + exp.getValue());
    }
}
